package com.whfc.mach.dao;


import com.whfc.mach.dto.AppMachOilRecordDTO;
import com.whfc.mach.entity.AppMachOilRecord;
import com.whfc.mach.param.MachOilAdd;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

@Repository
public interface AppMachOilRecordMapper {
    int deleteByPrimaryKey(Integer id);

    int insertSelective(AppMachOilRecord record);

    AppMachOilRecord selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(AppMachOilRecord record);

    int updateByPrimaryKey(AppMachOilRecord record);

    /**
     * 根据设备id逻辑删除
     *
     * @param machId
     * @param startTime
     * @param endTime
     */
    void deleteLogicByMachId(@Param("machId") Integer machId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 批量插入
     *
     * @param machId
     * @param oilAddList
     */
    void batchInsert(@Param("machId") Integer machId, @Param("oilAddList") List<MachOilAdd> oilAddList);

    /**
     * 查找设备的总标定加油量
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    Double selectTotalOilAdd(@Param("machId") Integer machId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 根据设备id和时间获取
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<MachOilAdd> selectByMachIdAndTime(@Param("machId") Integer machId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 批量插入
     *
     * @param oilRecordList
     * @return
     */
    int batchInserts(@Param("oilRecordList") List<AppMachOilRecord> oilRecordList);

    /**
     * 根据项目ID和时间范围查询
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppMachOilRecordDTO> selectOilAddByDeptIdAndTimeRange(@Param("deptId") Integer deptId, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("keyword") String keyword);

    /**
     * 根据设备ID和时间范围查询
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppMachOilRecordDTO> selectOilAddByMachIdAndTimeRange(@Param("machId") Integer machId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 根据设备ID和时间查询
     *
     * @param machId
     * @param time
     * @return
     */
    AppMachOilRecord selectOilAddByMachIdAndTime(@Param("machId") Integer machId, @Param("time") Date time);

    /**
     * 根据设备ID和时间范围统计
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    AppMachOilRecordDTO selectOilAddStatByMachIdAndTimeRange(@Param("machId") Integer machId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
}